import 'package:flutter/material.dart';

class RouterAnimate extends PageRouteBuilder {
  // 封装动画路由跳转
  // 继承与PageRouteBuilder并重构构造方法
  final Widget widget;

  RouterAnimate(this.widget)
      : super(
          transitionDuration: Duration(seconds: 1), // 动画时长
          pageBuilder: (
            // 页面构造器
            BuildContext context,
            Animation<double> animation1,
            Animation<double> animation2,
          ) {
            return widget;
          },
          transitionsBuilder: ( // 过渡动画构造器
              BuildContext context,
              Animation<double> animation1,
              Animation<double> animation2,
              Widget child) {
            // return FadeTransition(
            //   // 渐隐渐现过渡动画
            //   child: child,
            //   opacity: Tween(begin: 0.0, end: 1.0).animate(
            //     CurvedAnimation(
            //       parent: animation1, // 父级动画
            //       curve: Curves.fastOutSlowIn, // 动画曲线
            //     ),
            //   ),
            // );
            // return ScaleTransition(
            //   // 缩放过渡动画
            //   child: child,
            //   scale: Tween(begin: 0.0, end: 1.0).animate(
            //     CurvedAnimation(
            //       parent: animation1,
            //       curve: Curves.fastOutSlowIn,
            //     ),
            //   ),
            // );
            // return RotationTransition(
            //   // 旋转缩放过渡动画
            //   child: ScaleTransition(
            //     // 缩放过渡动画
            //     child: child,
            //     scale: Tween(begin: 0.0, end: 1.0).animate(
            //       CurvedAnimation(
            //         parent: animation1,
            //         curve: Curves.fastOutSlowIn,
            //       ),
            //     ),
            //   ),
            //   turns: Tween(begin: 0.0, end: 1.0).animate(
            //     CurvedAnimation(
            //       parent: animation1,
            //       curve: Curves.fastOutSlowIn,
            //     ),
            //   ),
            // );
            return SlideTransition(
              // 左右滑动过渡动画
              child: child,
              position: Tween<Offset>(
                begin: Offset(-1.0, 0.0),
                end: Offset(0.0, 0.0),
              ).animate(
                CurvedAnimation(
                  parent: animation1,
                  curve: Curves.fastOutSlowIn,
                ),
              ),
            );
          },
        );
}
